home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / pyshared / chardet / escprober.py < prev    next >
Text File  |  2006-10-21  |  3KB  |  80 lines

  1. ######################## BEGIN LICENSE BLOCK ########################
  2. # The Original Code is mozilla.org code.
  3. #
  4. # The Initial Developer of the Original Code is
  5. # Netscape Communications Corporation.
  6. # Portions created by the Initial Developer are Copyright (C) 1998
  7. # the Initial Developer. All Rights Reserved.
  8. #
  9. # Contributor(s):
  10. #   Mark Pilgrim - port to Python
  11. #
  12. # This library is free software; you can redistribute it and/or
  13. # modify it under the terms of the GNU Lesser General Public
  14. # License as published by the Free Software Foundation; either
  15. # version 2.1 of the License, or (at your option) any later version.
  16. # This library is distributed in the hope that it will be useful,
  17. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  19. # Lesser General Public License for more details.
  20. # You should have received a copy of the GNU Lesser General Public
  21. # License along with this library; if not, write to the Free Software
  22. # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  23. # 02110-1301  USA
  24. ######################### END LICENSE BLOCK #########################
  25.  
  26. import constants, sys
  27. from escsm import HZSMModel, ISO2022CNSMModel, ISO2022JPSMModel, ISO2022KRSMModel
  28. from charsetprober import CharSetProber
  29. from codingstatemachine import CodingStateMachine
  30.  
  31. class EscCharSetProber(CharSetProber):
  32.     def __init__(self):
  33.         CharSetProber.__init__(self)
  34.         self._mCodingSM = [ \
  35.             CodingStateMachine(HZSMModel),
  36.             CodingStateMachine(ISO2022CNSMModel),
  37.             CodingStateMachine(ISO2022JPSMModel),
  38.             CodingStateMachine(ISO2022KRSMModel)
  39.             ]
  40.         self.reset()
  41.  
  42.     def reset(self):
  43.         CharSetProber.reset(self)
  44.         for codingSM in self._mCodingSM:
  45.             if not codingSM: continue
  46.             codingSM.active = constants.True
  47.             codingSM.reset()
  48.         self._mActiveSM = len(self._mCodingSM)
  49.         self._mDetectedCharset = None
  50.  
  51.     def get_charset_name(self):
  52.         return self._mDetectedCharset
  53.  
  54.     def get_confidence(self):
  55.         if self._mDetectedCharset:
  56.             return 0.99
  57.         else:
  58.             return 0.00
  59.  
  60.     def feed(self, aBuf):
  61.         for c in aBuf:
  62.             for codingSM in self._mCodingSM:
  63.                 if not codingSM: continue
  64.                 if not codingSM.active: continue
  65.                 codingState = codingSM.next_state(c)
  66.                 if codingState == constants.eError:
  67.                     codingSM.active = constants.False
  68.                     self._mActiveSM -= 1
  69.                     if self._mActiveSM <= 0:
  70.                         self._mState = constants.eNotMe
  71.                         return self.get_state()
  72.                 elif codingState == constants.eItsMe:
  73.                     self._mState = constants.eFoundIt
  74.                     self._mDetectedCharset = codingSM.get_coding_state_machine()
  75.                     return self.get_state()
  76.                 
  77.         return self.get_state()
  78.